#include "JsonParse.h"
#include <fstream>
#include <assert.h>

JsonParse::JsonParse(string fileName) {
    // 打开文件
    ifstream ifs(fileName);
    assert(ifs.is_open()); // 确保文件正确打开了

    // 解析数据
    Json::Reader reader;
    reader.parse(ifs, _root);
    assert(_root.isObject());
}

// 获取数据库的信息
shared_ptr<DBInfo> JsonParse::getDataBaseInfo(DBType type) {
    // 获取type对应数据库的信息
    string dbName = (type == Mysql) ? "mysql" : "redis";
    Json::Value node = _root[dbName];

    // 实例化数据库信息对象, 并返回
    DBInfo* _dbInfo = new DBInfo;
    _dbInfo->_ip = node["ip"].asString();
    _dbInfo->_port = node["port"].asInt();
    if (type == Mysql) {
        _dbInfo->_user = node["user"].asString();
        _dbInfo->_password = node["password"].asString();
        _dbInfo->_dbName = node["dbname"].asString();
    }
    return shared_ptr<DBInfo>(_dbInfo);
}
